package com.enhe.gck.utils;

import com.kuangkie.carbon.panel.CarbonPanel;
import com.kuangkie.carbon.record.FGRecord;
import org.springframework.util.CollectionUtils;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * CarbonPanel拓展工具类
 */
public class CarbonPanelUtil {

    /**
     * 批量查询主模型的从模型
     *
     * @param fgRecordList 主模型集合
     * @param clazz        主模型Class
     * @param deep         查询深度
     * @param <T>          主模型类型
     * @return 主模型类型的数据集合
     */
    public static <T> List<T> deepQuery(List<FGRecord> fgRecordList, Class<T> clazz, int deep) {
        if (CollectionUtils.isEmpty(fgRecordList)) {
            return Collections.emptyList();
        }

        return fgRecordList.stream()
                .map(fgRecord -> CarbonPanel.getFGRecordComplexusBuilder()
                        .putRecord(fgRecord)
                        .getFGRecordComplexus()
                        .getRecordBean(fgRecord.getRecordCode(), clazz, deep))
                .collect(Collectors.toList());
    }

}
